home *** CD-ROM | disk | FTP | other *** search
- ;
- ; code to emulate the IBM PC ROM BIOS on the HP150.
- ;
-
- ; changed March 7, 1985 by MK to improve Line Draw mapping.
-
- page 61,132
-
- AVIDEOSEG EQU 0D000H
- BIOS_TIMER EQU 400H ;OFFSET TO 4 BYTE HP150 TIMER
- HI_VID_FUNC EQU 15 ;HIGHEST INT 10 FUNCTION
- video_frequency equ 6000 ; 60 cycles per second * 100
- pc_frequency equ 1821 ; 18.21 cycles per second * 100
-
- esc equ 27
- e_cr equ 0dh
- e_lf equ 0ah
- e_bs equ 08h
- ctrls equ 13h
- ctrlx equ 18h
- e_true equ 01h
- e_false equ 00h
- ;
- ; entry point to firmware.
- ;
- row_jumps segment at 0000h
- ;
- org 42fh
- mem_mgr label far
- ;
- row_jumps ends
- ;
- ;*****************************************************************************
- pccode SEGMENT byte public 'CODE'
- ASSUME CS:pccode,DS:pccode
- ;
- ; DATA AREA FOR RESIDENT CODE
- ; VARIABLES
- LOW_ROW DB 0
- HIGH_ROW DB 0
- CURSPOS DW 0
- ;
- ;
- ; these three used in MSDOS buffer keyboard input.
- bufptr dw 0,0
- bufmax dw 0
- bufindex dw 0
- ;
- ; these variables used to return special strings, like an ANSI
- ; cursor position request.
- ret_buf dw 0
- ret_cnt dw 0
- old_in_hand db 0
- ;
- ;
- timer_cnt dw video_frequency
- pc_active db e_false
- IOCTL_dev_info dw 0
- ;
- ; these variables used by ANSI escape sequences
- esc_seen db e_false
- in_ansi db e_false
- ansi_enh db 0ffh
- saved_curpos dw 0
- ansibuf_len dw 0
- ansibuf db 10h dup(0)
- cursensebuf db esc,"[00;00R"
-
- ; VALUE IS 0 IF NO DATA IS IN HAND
- IN_HAND DB e_false
- IN_DATA DW 0
-
- extrn kb_init:near
- extrn kb_reset:near
- extrn kb_is_q_empty:near
-
- ;
- ; Entry points. MS-PASCAL calling conventions used.
- ;
- public pcinit,pcterm
- ;
- pcinit proc far
- push ds ; save some regs
- push es
- push bp
- ;
- push cs ; our data is in the code seg
- pop ds
- ;
- mov ax,3521h ; get MSDOS vector for later calls
- int 21h
- mov word ptr msdos_entry,bx
- mov word ptr msdos_entry+2,es
- ;
- call init_interrupts
- ;
- call kb_init ; initialize the keyboard driver
- ;
- call enable_pc
- ;
- pop bp
- pop es
- pop ds
- ret
- pcinit endp
- ;
- ;
- pcterm proc far
- push ds ; save some regs
- push es
- push bp
- ;
- push cs
- pop ds
- ;
- call disable_pc
- call kb_reset ; clear keyboard driver.
- call clr_interrupts
- ;
- pop bp
- pop es
- pop ds
- ret
- pcterm endp
-
- enable_pc proc near
- mov ax,4400h ; save console device info
- xor bx,bx ; console handle is zero
- int 21h
- mov dh,0 ; clear high byte if info.
- mov IOCTL_dev_info,dx
- ;
- call init_video
- mov pc_active,e_true
- mov ansi_enh,0ffh
- mov ah,83h
- int 16h
- ret
- enable_pc endp
- ;
- disable_pc proc near
- mov pc_active,e_false
- mov ah,84h
- int 16h
- call reset_video
- ;
- mov dx,IOCTL_dev_info ; restore dev info
- mov ax,4401h
- xor bx,bx ; console handle = 0
- int 21h
- ret
- disable_pc endp
-
- ; HERE ON INTERRUPT 10
- INT10: STI ;RESTORE INTERRUPTS
- PUSH SI
- PUSH DI
- PUSH DX
- PUSH CX
- PUSH BX
- PUSH ES
- PUSH DS
- PUSH AX
- PUSH CS
- POP DS
- ;
- test ah,80h ; test for extended functions
- jz normal_int10
- ;
- mov di,offset extend_int10_vects
- cmp ah,86h
- jg badcall
- ;
- and ah,7fh ; clear extend fct flag.
- jmp short int10_exit
- ;
- normal_int10:
- mov di,offset int10_vects
- CMP AH,HI_VID_FUNC
- JG BADCALL ;ERROR
- ;
- int10_exit:
- push ax
- MOV AL,AH
- XOR AH,AH
- SHL AX,1
- ADD DI,AX
- pop ax
- JMP WORD PTR [DI] ;CALL SERVER FOR INT10 SUBFUNC
-
- ; UNSUPPORTED INT 10 SUBFUNCTIONS
- SET_MODE: ;SET VIDEO MODE
- SET_CTYPE: ;SET CURSOR TYPE
- ACT_DISP_PAGE: ;SELECT ACTIVE DISPLAY PAGE
- SET_COLOR: ;SET COLOR PALETTE / BACKGROUND COLOR
- WRITE_DOT: ;WRITE A SINGLE PIXEL
- READ_DOT: ;READ A SINGLE PIXEL
- BADCALL:
- JMP RETURN
- ;
- INT10_VECTS:
- DW OFFSET SET_MODE ; 0
- DW OFFSET SET_CTYPE ; 1
- DW OFFSET write_cursor ; 2
- DW OFFSET READ_CURSOR ; 3
- DW OFFSET READ_LPEN ; 4
- DW OFFSET ACT_DISP_PAGE ; 5
- DW OFFSET SCROLL_UP ; 6
- DW OFFSET SCROLL_DOWN ; 7
- DW OFFSET READ_AC_CURRENT ; 8
- DW OFFSET WRITE_AC_CURRENT ; 9
- DW OFFSET WRITE_C_CURRENT ; 10
- DW OFFSET SET_COLOR ; 11
- DW OFFSET WRITE_DOT ; 12
- DW OFFSET READ_DOT ; 13
- DW OFFSET WRITE_TTY ; 14
- DW OFFSET VIDEO_STATE ; 15
-
- extend_int10_vects:
- dw offset extend_enable ; 80h
- dw offset extend_disable ; 81h
- dw offset read_ac_random ; 82h
- dw offset write_ac_random ; 83h
- dw offset write_c_random ; 84h
- dw offset bell_fct ; 85h
- dw offset status_fct ; 86h
- ;
- ; extended INT 10 fucntion 85h, ring bell
- ;
- ; entry: fct ah = 85h
- ; al = frequency. values are 0 through 0fh, for frequencies
- ; from 290 Hz to 1.7 KHz.
- ; bl = duration, in units of 100m secs
- ;
- bell_fct:
- and al,0fh
- or al,030h
- ;
- bell_fct_loop:
- out 19h,al
- call delay
- cmp bl,0
- jle bell_fct90
- dec bl
- jnz bell_fct_loop
- ;
- bell_fct90:
- jmp return
- ;
- ;
- ; delay 100 milliseconds
- ;
- delay proc near
- mov cx,2800h
- delay_loop:
- push si
- pop si
- loop delay_loop
- ret
- delay endp
- ;
- ; beep the bell
- ;
- beep proc near
- mov ax,8509h ; use extended fct to ring bell.
- mov bl,1
- int 10h
- ret
- beep endp
-
- ;
- ; extended INT 10 function, enable PC emulation (default).
- ;
- extend_enable:
- call enable_pc
- jmp return
- ;
- extend_disable:
- call disable_pc
- jmp return
- ;
- ; extended INT 10 fct, return status of PC emulation
- ;
- ; on exit: al = 1 if emulation is active
- ; al = 0 if emulation is inactive
- status_fct:
- mov al,pc_active
- mov ah,0
- jmp retnewax
- ;
- ; RETURN CURRENT CURSOR POSITION IN DX
- READ_CURSOR:
- MOV DX,CURSPOS
- MOV CX,0 ;DEFAULT/DUMMY CURSOR TYPE
- POP AX
- POP DS
- POP ES
- POP BX
- POP DI ;DISCARD OLD CX
- POP DI ;DISCARD OLD DX
- POP DI
- POP SI
- IRET ;JUST RETURN TO INTERRUPTER
-
-
- ; SCROLLING
- ; CX = Row , Column of upper left corner
- ; DX = Row , Column of lower right corner
- ; BH = Attr char on blank line
- ; AL = Number of rows to scroll (0 = Blank All)
- SCROLL_DOWN:
- NEG AL ;MOVE ROWS DOWN
- SCROLL_UP:
- MOV bl,BH ;PASS ATTR IN bL
- CALL CONV_ATTR ;CONVERT ATTRIBUTE TO HP
- MOV AH,bl ;AH = ATTRIBUTE (HP)
- CALL SCROLL_SUBR
- JMP RETURN
-
- ; SUBROUTINE TO HANDLE ALL SCROLLING
- ;
- ; entry: al = scroll count.
- ; dx = row, col of lower right corner
- ; cx = row, column of upper left
- ; ah = HP enhancement
- SCROLL_SUBR:
- MOV LOW_ROW,DH
- MOV HIGH_ROW,CH
- XCHG AL,DH
- SUB AL,CH ;# OF ROWS IN SCROLL WINDOW
- JS scroll_quit ;LOWER ROW IS HIGHER THAN HIGHER
- INC AL ;AL = COUNT OF ROWS IN WINDOW
- SUB DL,CL ;RIGHT COL - LEFT COL
- JS scroll_quit ;RIGHT IS LEFT OF LEFT COL
- INC DL
- OR DH,DH
- JNS SC_2 ;JUMP IF SCROLLING UP
- MOV CH,LOW_ROW ;CH = LOWEST ROW
- SC_2: XCHG CL,DL ;CL= # OF COLS IN WINDOW, DL = START COL
- PUSH SI
- CLD
- ;
- ; DL = STARTING COLUMN, CH = NEXT ROW TO BE MOVED INTO, AH = ATTR CHARACTER
- ; CL = # OF COLS TO MOV, AL = # OF SCROLLS REMAINING, DH = # OF ROWS TO MOV
- NEXT_SCR: PUSH CX
- PUSH AX
- push dx
- MOV dh,CH
- CALL ROWADDR
- pop dx
- MOV BL,CH
- XOR CH,CH
- OR DH,DH
- JZ DO_FILL ;BLANKING ALL
- ADD BL,DH ;COMPUTE ROW WE'RE MOVING FROM
- CMP BL,HIGH_ROW
- JL DO_FILL ;BELOW LOWER ROW
- CMP BL,LOW_ROW
- JG DO_FILL ;ABOVE HIGHER ROW
- PUSH DI
- push dx
- mov dh,bl
- CALL ROWADDR
- pop dx
- MOV SI,DI
- POP DI
- push ds ; save our DS
- push es
- pop ds ;both ES and DS to video area.
- REP MOVSW ;MOVE IT
- pop ds
- NSCR_1: POP AX
- POP CX
- OR DH,DH
- JNS NSCR_2
- DEC CH ;SCROLLING DOWN
- JMP SHORT NSCR_3
- NSCR_2: INC CH ;SCROLLING UP
- NSCR_3: DEC AL
- JNZ NEXT_SCR
- POP SI
- scroll_quit:
- RET
- ;
- DO_FILL: POP AX ;GET THE ATTR CHARACTER
- PUSH AX
- push ds
- push es
- pop ds
- MOV AL,020H ;ATTRIBUTES
- REP STOSW ;FILL THE LINE
- pop ds
- JMP NSCR_1
-
- ; DH = row , DL = column
- ; on exit ES:DI = addr of char in video mem.
- ROWADDR:
- mov ax,avideoseg
- mov es,ax
- ;
- mov ah,0
- mov al,dh
- mov di,ax
- SHL di,1
- SHL di,1
- ADD di,row_tab ;DI= ADDR INTO 25 ENTRY HARDWARE PTRS
- MOV AL,DL
- CBW
- ADD AL,es:[di]
- ADC AH,es:[di+2]
- SHL AX,1 ;AX = ADDR IN VIDEO MEMORY OR ROW,COL
- MOV DI,AX
- RET
-
- ; WRITE CHARACTER, NO ATTRIBUTE
- WRITE_C_current:
- mov dx,curspos
- write_c_random:
- MOV bl,0FFH ;NO ENHANCEMENT CHANGE
- write_c_common:
- push ax
- push bx
- CALL FASTC
- pop bx
- pop ax
- inc dl ; increment the column
- cmp dl,79
- jle write_c_continue
- mov dl,0
- inc dh
- write_c_continue:
- loop write_c_common
- JMP RETURN
-
- ; WRITE CHAR AND ATTRIBUTE
- WRITE_AC_CURRENT:
- mov dx,curspos
- write_ac_random:
- CALL CONV_ATTR ;CONVERT ATTRIBUTE TO HP
- jmp write_c_common
-
- ; WRITE CHARACTER AT CURRENT CURSOR
- WRITE_TTY:
- call conout
- jmp return
-
- write_cursor:
- call setcursor
- JMP RETURN
- ;
- ; Read the "light pen" For the HP150, read the touch screen.
- read_lpen:
- mov ah,81h ; Extended HP function for reading touch screen.
- int 16h
- cmp al,0ffh ; check if no data available.
- jne got_lpen
- ;
- mov ah,0
- jmp retnewax
- ;
- got_lpen:
- mov dx,ax ; return row col position.
- mov ch,ah ; return graphics row.
- mov cl,3
- shl ch,cl
- mov bl,al ; bx gets pixel col.
- mov bh,0
- mov cl,3
- shl bx,cl
- mov ah,1
- ;
- pop si ; return, preserving AX,BX,CX and DX
- pop ds
- pop es
- pop si
- pop si
- pop si
- pop di
- pop si
- iret
- ;
- ; read a screen character
- read_ac_current:
- mov dx,curspos
- read_ac_random:
- call fastread
- jmp retnewax
- ;
- ; read the char at current screen loc. return al = data, ah = attribute
- ;(dh,dl) has (row,col)
- ;
- fastread proc near
- call rowaddr
- mov ax,es:[di]
- call conv_hp_to_ibm
- push bx ; save attribute in BL
- ;
- and ax,037fh ; isolate character set code
- cmp ah,0
- jz fastread90 ; done if normal char set
- ;
- mov si,offset game_chars ; search game chars for match
- call check_match
- jnc fastread90 ; no carry if good match
- ;
- mov si,offset extend_chars ; check line draw, math or foreign
- call check_match
- jc fastread20 ; jump if unknown value
- ;
- or al,80h ; put into eight bit range
- jmp short fastread90
- ;
- fastread20:
- mov al," " ; unknown char, return blank
- ;
- fastread90:
- pop bx ; restore attribute
- mov ah,bl
- ret
- fastread endp
- ;
- ; check_match -> serach char set table for match
- ;
- ; on entry: al holds 7 bit code. ah holds character set code
- ; si points to char set table
- ;
- ; on exit: carry set if no match
- ; if carry not set, al has index value of found char
- ;
- check_match proc near
- mov dl,0 ; dl is index into table
- check_loop:
- mov cx,[si] ; get next table entry
- inc si ; point to next word entry
- inc si
- cmp cl,-1 ; test if at end of table
- je check_nomatch
- ;
- and cx,037fh ; clear out extraneous bits
- cmp cx,ax
- je check_goodmatch
- ;
- inc dl ; inc table index
- jmp check_loop
- ;
- check_goodmatch:
- mov al,dl ; replace input wchar with translation
- clc ; signal good match
- ret
- ;
- check_nomatch:
- stc ; carry means no match
- ret
- check_match endp
- ;
- ; convert hp attribute to IBM attribute. AH holds attribute.
- ; return IBM attribute in bl
- ;
- conv_hp_to_ibm:
- mov bl,07h ; scratch space in bl
- test ah,40h ; map half bright to full intensity
- jz conv_hp10
- or bl,08h
- conv_hp10:
- test ah,20h ; test underline
- jz conv_hp20
- and bl,88h
- or bl,01h
- conv_hp20:
- test ah,10h ; test inverse video
- jz conv_hp30
- and bl,0f8h
- or bl,70h
- conv_hp30:
- test ah,08h ; test blinking
- jz conv_hp40
- or bl,80h
- conv_hp40:
- test ah,80h ; test security
- jz conv_hp50
- and bl,88h
- conv_hp50:
- ret
- ;
- ; CONVERT ATTRIBUTE FROM IBM style to HP. value is in BL
- CONV_ATTR:
- push ax
- xor al,al ; scratch space for attribute.
- OR bl,bl
- JNS CA_1 ;NOT BLINKING
- OR al,8 ;DH = BLINK
- CA_1: TEST bl,8
- JZ CA_2 ;Map high intensity to half bright
- OR al,40H ;SET HALF-BRIGHT
- CA_2: AND bl,077H
- CMP bl,1
- JNE CA_4
- OR al,20H ;UNDERLINE
- CA_4: CMP bl,070H
- JNE CA_6
- OR al,10H ;INVERSE VIDEO
- CA_6: cmp bl,0
- jne ca_7
- or al,80h ;SECURITY
- CA_7: mov bl,al
- pop ax
- RET
-
- ; ENTERED WITH ENHANCEMENT IN BL, CHAR IN AL
- ; (DH,DL) has (row,col)
- FASTC:
- PUSH AX
- CALL ROWADDR
- POP AX
- ;
- cmp bl,0ffh ; if default enhance, pick up real one
- jne fastc5
- ;
- mov bl,es:[di+1]
- and bl,0f8h ; leave Disp enhancements, clear Line and Math
- ;
- ; check for IBM PC game chars in range 00h to 1fh
- ;
- fastc5:
- test al,0e0h
- jnz fastc10
- ;
- mov ah,0
- mov si,ax
- shl si,1
- mov ax,word ptr [si+game_chars]
- and al,7fh
- or bl,ah
- jmp short fastc50
- ;
- ; check for eight bit extended chars.
- ;
- fastc10:
- test al,80h
- jz fastc50
- ;
- and al,7fh
- mov ah,0
- mov si,ax
- shl si,1
- mov ax,word ptr [si+extend_chars]
- and al,7fh
- or bl,ah
- ;
- fastc50:
- mov es:[di],al
- mov es:[di+1],bl
- ret
-
-
- ; RETURN THE FIXED VIDEO STATE OF THE 150
- VIDEO_STATE:
- POP AX
- POP DS
- POP ES
- POP BX
- MOV BH,0
- MOV AX,05002H ;80 COLUMNS X 25 : B & W
- JMP RETCX
-
-
- ;*****************************************************************************
-
- ;* INTERRUPT 11 processing
-
- ;*****************************************************************************
-
- ; RETURN EQUIPMENT AS 2 DISCS SYSTEM, 80X25 B&W VIDEO, NO RS232/ PRINTER
- INT11: STI ;RESTORE INTERRUPTS
- MOV AX,007DH ;SEE IBM ROM BIOS LISTING FOR MEANINGS
- IRET
- ;******************************************
-
- ;* INTERRUPT 12 memory size check
-
- ; return the number of 1K memory blocks available.
- ;******************************************
- ;
- INT12:
- push si ; save some regs
- push ds
- push cx
- push dx
- push bx
- ;
- mov ax,256 ; minimun for HP150 is 256K bytes memory
- mov cx,4000h ; CX holds segment value, starting at 256K
- xor si,si ; for zero offsets.
- mov bx,55aah
- ;
- int12_loop:
- mov ds,cx ; point to high memory
- cli ; disable interrupts.
- mov dl,[si] ; save test word
- mov [si],bl ; see if we can write to this loc
- cmp [si],bl
- jne int12_exit ; no more memory if no match
- ;
- mov [si],bh
- cmp [si],bh
- jne int12_exit
- ;
- mov [si],dl ; here if valid memory. restore original
- sti ; re-enable interrupts
- add ax,64 ; move in 64K increments
- add cx,1000h ; update segment value
- cmp cx,9000h ; test if full load of memory
- jne int12_loop
- ;
- int12_exit:
- sti ; re-enable interrupts
- pop bx
- pop dx
- pop cx
- pop ds
- pop si
- iret ; return with memory size in AX
-
- ;*****************************************
-
- ;* INTERRUPT 1C dummy timer tic routine.
-
- ;*******************************************
- ; Interrupt 1c, timmer tic. Dummy routine. May be replaced by
- ; application routine.
-
- INT1C:
- IRET
-
- ;******************************************
-
- ;* INTERRUPT 42 HP150 VIDEO
-
- ;
- ; Interrupt 42, HP150 video interrupt. This interrupt happens 60 times
- ; a second. Use it to make sure that our filter on MSDOS interrupt 21
- ; stays in place, and to implement the IBM timer tic, 18.2 times a second.
- ;*******************************************
-
- int42:
- pushf ; do real video interrupt
- call dword ptr cs:[v_int42]
- ;
- push ax ; save some regs
- push si
- push es
- push ds
- ;
- push cs ; our data is in the code segment
- pop ds
- ;
- ; Check that MSDOS int 21 hasn't been restored to old value.
- xor ax,ax
- mov es,ax
- mov si,84h ; point straight to 0:84 for interrupt location
- mov ax,word ptr [v_int21+2] ; compare code segments.
- cmp ax,es:[si+2]
- jne int42_timer ; jump if still ok.
- ;
- cli ; disable interrupts
- mov word ptr es:[si],offset int21
- mov word ptr es:[si+2],cs
- sti
- ;
- int42_timer:
- sub word ptr timer_cnt,pc_frequency
- jnc int42_exit
- ;
- ; get here for about 1 out of 3 video interrupts (1821/6000)
- add word ptr timer_cnt,video_frequency
- int 1ch ; execute user interrupt routine.
- ;
- int42_exit:
- pop ds
- pop es
- pop si
- pop ax
- iret
-
- ;********************************************
- ;
- ; Display handling routines.
- ;
- ;*******************************************
-
- conin_ctrlc:
- call constat
- jz conin_ctrlc
- call ctrlc_check
- call conin
- ret
- ;
- ; conin -> read a char from keyboard.
- conin:
- cmp in_hand,e_true
- je conin_havechar
- ;
- mov ah,0
- int 16h
- jmp short conin50
- ;
- conin_havechar:
- mov cx,ret_cnt
- or cx,cx
- jz conin_real_input
- ;
- mov si,ret_buf
- mov al,[si]
- inc ret_buf
- dec ret_cnt
- jnz conin_ret90
- ;
- mov cl,old_in_hand
- mov in_hand,cl
- conin_ret90:
- ret
- ;
- ;
- conin_real_input:
- mov ax,in_data
- conin50:
- cmp al,0 ; if non-ascii char, return as two bytes
- jne conin90
- mov bl,ah ;
- mov bh," "
- mov in_data,bx ; save for next read.
- mov in_hand,e_true ; flag more data available.
- ret
- ;
- conin90:
- mov in_hand,e_false
- ret
-
-
- ctrlc_check:
- cmp byte ptr in_hand,e_false
- je ctrlc_check90
- cmp b_q S:
- callH TTYON}ni10
- 10
- }HP)10
- S :
- call
- pc_H
- SCURR:
- call ;quenc╣ ifextendUP th10
- 10
- curso
- SCT Woc. th10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- ERRU d.2latioONndo ROendp
- E I th10
- ìON10
- 10
- 10
- 10
- elayH ffs SUBRnireaON10
- 10
- 10
- SUB th10
- 10
- DX th10
- torb_ th10
- 10
- 10
- ENatFFHet sHIGH_
- SC10
- OR THIGH_L = :neONENN_z ONalseor 10
- 10
- alse 1.zeON10
- 10
- k i,Ht_lp: P1hON10
- 10
- ow c enh
- ;
- ; eoneLL th10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- PUSH OND
- pc_10
- .
- mov b
- ;
- ; e ;ght EST th10
- 0_vON10
- 10
- que0 te so
- SCemeON10
- 10
- 10
-
- pop s th10
- e =·or
- scree· 1.WIN
- d·.210
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- A MS- th10
- 10
- 10
- lineHP)10
- is alat
- pc_it:SS lat ;v cneaven ifoff cyc th10
- 10
- 10
- 10
- 10
- 10
- endpvenL = ALLSTAvenN_h eCX, th10
- READ_CON10
- 10
- yboON10
- 10
- 000oi th10
- 10
- ?.
- ; RO10
- 10
- 10
- 10
- ingsSTC th10
- bx,b di 0dni ;L
-
- ; W 0dHP)
- Lncy th10
-
- ; corn 0d ;10
- 44 = A ifati_2 = AatvecON INTO
- SCend_eba = AL =
- mov dansib = AN_10
- ;
- mHor vectl cH 1.10
- NG H.218h÷H: P10
- 10
- @ RO
- ;
- ; WRITE_TT th10
- 10
- ndo thH 10
- return g
-
- wni10
- 10
- 10
- 10
- _initTA th
- pc_the chry+:
- callë_qk 10
- 10
- 10
- elaà pc_LL D_
-
- w10
- trn 2àOV dX
- pH,Aà= AItruesog b_exiCT
-
- w10
- endpingsoursh,alfsoBOC AHte_c
-
- w10
- 10
- 10
- 10
- 10
- 10
- 10
- ndoCH
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- t 1act
-
- w10
- 10
- 10
- 10
- 10
- 10
- mm
-
- w10
-
- DW OFFnear
-
- w10
- v_k 10
- 10
- 10
- endpttursc
- mov
- j= chCTSg b10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- ENOV d10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- RITttfct910
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- HANGirettgot10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- DW OFfct910
- SI
- E OOV d10
- COLSE O= it k 10
- 10
- : k 10
- 10
- wek OP eg10
- 10
- 10
- 10
- 4ion,
-
- w10
- queâ
-
- w10
- ofk 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- OP CH
- col k 10
- 10
- 10
- ax,POP gotS
- Mk lineeg,ast.SHL pc_T REk 10
- 10
- bx,k 10
- 10
- 10
- ax
-
- w10
- 10
- O
-
- w10
- IN_k 10
- 10
- R
- Pk KIursR
- k 10
- 10
- LTk 10
- 10
- 10
- 10
- _ve pc_10
- wax
-
-
- w10
- 10
- 10
- _vefct9lk 10
- 10
- 10
- ; sa_vi_210
- 10
- _vegote =∙
-
- wOV des
- popk 10
- 10
- PORH,DING oS:pk ,rOV dTE Csi
- pemul= ARIk INTOg bLOW_Rk 10
- 10
- 10
- HP fINGurs10
- iteINGBOs VECING0h
- dG Ae
- ;
-
- w10
- 10
- 1
-
-
- w10
- ROWS Tk @fct9:on
-
- wCH
- 10
- re
- l_2h,81, DH
-
- w10
- _murn
-
- weg10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 0h
- _v10
- 10
- INTOàcode10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- th · if: 10
- ndp_v10
- 10
- IDEO ifLOW_R╝ theg = dCALL:P_ popX
- p10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- men_vi_v10
- DO_FI
- legpt10
- got10h10hvideP_10
- 10
- _3P_ndougendp
- PI
- JM: ING AUND10hvectst(0
- JM_exiX
- pP_elayOS vll
- i_v10
- h l
- JMgc P_EN_exi = roP_10
- 10
- OS vAR_v10
- 10
- MOVI_v10
- LL_ ; tr
- ug10
- 10
- EN_FITRIP_10
- 10
- ds
- I_v10
- p
- P_10
- 10
- 60 dx,_v10
- andP_D 6h
- ;10
- 10
- 10
- 10
- e theP_D _exicode INCahOS v10
- 10
- D : ;I
- p_v10
- CL
- dwahpt10
- 10
- DW OF_exi10
- OWOP6h
- ;10
- 10
- DW OFg10
- 10
- lineg10
- 10
- DW OF_FI10
- 10
- DW OFptTINGES 10h ext_PAES 6h
- ;
- push j_v10
- #
- pcES ALLcol w_ES vectolumno
- _v10
- ugJ,ahOS vER TP_10
- 10
- ;SEPTS,ahptv c LI,ahLOW_R
- MOP_KIcode10
- 10
- KIX
- pER R ; readug10
- ISC_v10
- L_dP_KI_FIET_CP_KIptR
- POFFSE_v10
- ;
- ;s
- ;
-
- jmp r6h
- ;READ_CP__ve
- PUSD OLer ALL10
- E AT_v10
- 21 tendeer _exi_FIn ker OS vCX ;ber : L_DH_er g10
- 10
- 10
- 10
- STP_10
- 10
- DLP_10
- 10
- _isK PIcode
- Xl_q PIuged t_v10
- 10
- 10
- @10h10
- 10
- 10
- 10
- v IMEMEN6h
- ;_mOSMEN
- G C1MENALLdx t.MENvect10
- 10
- 10
- 10
- pt= N_vOS vORP_10
- : ansi_ z_vg2
- N W_vLOW_R1
- P_ ifad 10
- 10
- 10
- 10
- 10
- fau(0delayax
- 16(0ORT10
- 10
- 10
- 10
- 10
- :[(0
- equenc
- POP S10
- 10
- extend
- POP S10
- 10
- nt sLoop10
- T W
- POP S10
- 10
- 10
- 10
- poppciX
- PO
- POP S10
- 10
- 10h ; 12oop10
- 10
- 10
- ndoNTE10
- 10
- 10
- 10
- endp
- aroop10
- 10
- 10
- 10
- 10
- 10
- 10
- elay ; 12s ;oop10
- reaosPORT
- DW OFF
- POP SelayxstOSEP
- etor
- e
- JN
- JMì = B
- JNFSFFH
- POP SEN10010
- 10
- ENOW
- :newritoopCOU k10
- alseC e10
- 10
- alseAL,D10
- 10
- alseNTEk i AL li
- mo1hhiliend_ow c LO
- iad eAV
- i ; 12 ;D
- POP SD delayint10 =
- iORTPUSH
- POP SD xDI
- POP SD
- eght ntrbuf
- JM10
- P buf FS0_v'buf 100emen ofbuf OW
- si ct_buf pci¢_Aoop10
-
- MSAL,DWIN
- POP SOP NTEATTRIB
- POP SOP
- moue E M MSend_ Nbl,1lad ct v_oop10
- Aall rldelayER TR [lORT10
- is alx10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- @AL,D10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- kDW OF_ve╜10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- ;LN
- _cuORT
- L
- POP S,rx
- ; c
- POP S10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- m:H
- Xoop10
- 10
-
- mov poop10
- ush e
- POP S@end_10
- puoopad es choop ; 12
- ;
- ; likoopdelay10
- 10
- 10
- ORT_init
- POP S10
- 10
- the chh
- doop10
- SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSS0
- 10
- 10
- ela┴
- ;
- D10
- 7,┴ec COL
- D O┴v iERMEM┴o i10
- cle
- FF_exiiiiiiiiipopLEendpret
- e
- ÿh,aO HP
- (HC AHURSOR
- uph
- mmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmmdodatrnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn0
- 10
- 10
- ndpiniTI dx,aycinifot 1 OFFos_10
- ,0DI]iniz10
- 10
- elayr
- _CURR DSAR
- ;
- DAV drARec v_
- aARv ic CTYARo i chURos_10
- OS v
- ;
- eTELE
- i
- rTEfo kDW OFEN(Hc_rFOTEup alH
- HI_da theeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeelseTO B= ADDll_HI_ec kDW OFalsefods
- )
- HI_1HANG_looHI_zhrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr r
-
- pQctiv
- ;
- Dbl,aTE_Activec M
- SINctivv iBMOWctivo i10
- 6h moFF: scro moLEweÄ moÿ10
- 10
- DW OF(H10
-
- ;
- ; rDOWupqueeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeP da ofA ; tTO Bdh,os_10
- 10
- ET A ; tfoby def ; t1theblos_10
- S
- Mree_CUr
- 10
-
- ;
- be_CU
- ;
- DT REEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE0
- 10
- 10
- KH_CUv iD
- _CUo i- ueUNDFFgl,0UNDLEteeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0
- 10
- ▀ BUND(H10
- 10
- 10
- 10
- 10
- 10
- }ON10
- 10
- 10
- 10
- 10
- 10
- 10
- /olumn ds UMN 4ugn AUMN
- rDL =
- ;
- tlinedeo;SEetUMNntryor a
- ;
- tlineDO_F
- MO
- ;
- tKI lBYds
- enablen stER RevenableIRATTRIB
- ;
- tKIDDL_d Fenable 10
- curspoenablendpR
- Pif ndx,w 0;
- ;
- ;
- t}curren R10
- ╕√ lo10
- _FIILNSCR_
- r10
- h ;ush c10
- 10
- si NSCR_ntry10
- hancNSCR_DO_FX
- POlliush c10
- DLHANGush c10
- 10
- 2hush c10
- s re,CHDDe
- ;
- t INTO 10
- 0
- r,CHndp, CHotush c10
- v ADC0 ISW ues
- ;
- t@ e_G C gush c e_dx fe0 I
- popc
-
- ;
- t10
- 4ptWush c
- rORCURREush cdeo10
- 10
- 10
- ntry2
- _int10ush cDO_F10
- 10
- 10
- 10
- 10
- _m devallTTYYYYcSDO10
- ax
-
- s10
- 10
- t
- M devrH
- SSOR devADquencöSDO10
- extend_VIDRct ant s╧SDO10
- T WurnDRCROLLI
- PUSH OFFSETSDO10
- ON10
- 10
- 10
- 10
- 10
- 10
- 10
- DX SDO10
- 10
- P1_3BU10
-
- dSDO10
- "l
- s10
- 10
- E IN INCr10
- rit INCADDRreale w INCs s
- DW OFFv aSDO10
- ch
- s10
- 10
- 10
- IBSDO10
- ì3TINct a10
- andTINNO10
- /10
- 10
- 10
- 10
- 10
- SUB 5 ndedYPE
- s}k i_ac5 BU1hcl5 pub10
- DXRT CBle
- s}drSDO10
- 10
- /DI
- sDW OF ; cght s.OREahINTNS NSDO10
- 10
- 10
- DW OFNO10
- >ORECROLLI10
- 10
- DW OFY H10
- 0I
- pBU lo10
- 10
-
- DW OFFSE SC ; cCres SCBUue PASSDO10
- N
- pop I
- pBlct M
- I
- pall10
- 10
- lineADDR10
- 10
- lines s_FI
- s} lo10
- off╤ mect a10
- 10
- 10
- 10
- 10
- 10
- KICROLLI10
- 10
- }10
- / lo10
- 10
- wax
- SDO10
- 10
- 10
- _vepub10
- rc
- dwBl10
- 10
- 10
- 10
- 1
- dwADDR ;LN SDO10
- TE CAT ; c
- ; csab
- dwADSTDI SDO10
- ati
- s INTOct avecUNCTATNO10
- 10
- 10
- 10
-
- mov d
- s INTOY H10
- /ON@ndedm:
- s10
- 10
- 10
- e uSDO10
- _qCH loBl es
- s10
- all
- ;
- ;
- s10
- ADDR10
- /10
- 10
- 10
- rthe ch[SDOAD10
- 10
- 10
- 10
- lo10
- LL LL ;ABRCOL
- ena ;APPERCOU}AI 0sp10
- 1hCHFAERh,a, iO DnearC AHCOU}10
-
- ;sp10
- ONndocl
- COUelayOP_CURRdel
- mX
- 10
- ng A
- mBRv_COU10
- 10
- 10
- /;
- domar
- 10
- 10
- 10
- 10
- 10
- SEGdomnearc_rt csp10
- 10
- 10
- 10
- 10
- theCOU}10
- 10
- alsec d10
- 10
- D ;COds
- COUalse ;COHANGILLsp10
- hrQU
- pusOP
- pbx
- pusX
- 10
- 10
- D BRM
- COU}10
-
- pop dsp10
- 10
- 6h
- m.
- ;: COU}10
-
- DW OFFSE
- mER WICOU10
- 10
- 4ump
- mall WINCHON10
- 10
- SHCOU10
- 10
- theh ;mp s ;CO10
-
- jmp remp scl
- S
- M IT0 HOP10
-
- ;
- be0 HX
- T RExtesp10
- 10
- KHsp10
- DCOUlineERRO10
- O sp10
- 10
- 10
- KIar
- ATTRIBCOU}mptS L = cnearC_2MP L = call ead_1
- ;
- PU offseLT 4
- PUVIDEO10
- 10
- _vec d0COU_veall IF OFFS sa10
- /CgetsX
- POR^getsBRS:pCOU,rPP10
- /e thei,10
- 10
- OF i,10
- 10
- 10
- ,D jE
- Wpos; BRN10
- 10
- 10
- 10
- 10
- quenON}10
- 10
- 10
- 10
- 10
- SUB W O10
- YPE.7W O10
- AHCALL F} = a.
- bnt mptDH.
- bbelllARA.
- b
- ;
- ptinrow_t.
- bOP AWRITE_A,cse10
- e =ERTse10
- es
- popPOG DPORffhse10
- S:pE:G SI,TE CulatG etnARIuch INTOAND LOW_Rs_SH C╚CHARAReSH CRIB10
- itese10
- s ,se10
- 10
- msorts r_ead_se10
- ROWS Tinitortbell:ble_pcort
- ;
- pTTR uch@OP Ah,81uch@dx,c10
- popse10
- int 1 CHAse10
- 5
- uch10
- CH,Cs ofuch10
- SI,T Spop se10
- ndo bq_ b = d_inq_ OFFth ; co10
- 10
- Bh H = N10
- = arneq_e_fals10
- oinOFFSEDSCALL: ; co pop0h HAse H = N10
- dxXCHOFFSEB en ;SOFFSERY DO_FI ; co pop
- ; dOV dendp
-
- jmp rvidev iH = N10
- _3PPendp
- b OFFSE ; co10
- 10
- 10
- 10
- 10
- 10
- 10
- ; 15op b10
- 10
- 10
- 10
- ll ; co10
- 10
- 10
- hanH = N10
- 10
- 10
- 10
- 10
- = ro the H = N10
- eqmpts
- ;
- 0h 10
- /FILLdl10
- /C e:
- call lo10
- 10
- /10
- 10
- 10
- 10
- 10
- 10
- INTODSDLWRITE_ASH D0h _iscurreSH DC C
- Xic H = N10
- eX,SH DRY u,0fSH D
- ;, CH ; co@
- jmp rv RDSUBRTues ; co10
- 10
- G CH = #SUBR
- jldx disablSUBRdl10
- }H = N bptst H = N OFF10
- 10
- 10
- 10
- ansi_nH = Nme10
- 10
- 10
- e_fals1
-
- PT 10
- _qe =T 10
- TTYthT 10
- ax
- leatendeNO E10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- extendmicurr10
- 10
- 10
- 10
- 10
- 10
- popn of
- PUSH wrT X
- PO
- pc_ING Ales10
- 10
- ndoIDE10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- endp
- D AT10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- ah,7T 10
- 10
- z tT 10
- 10
- 10
- elayσ10
- 10
- 10
- 10
- 10
- IBMP Ier 10
- 10
- EN E10
- e.T 10
- 10
- 10
- 10
- 10
- 10
- 10
- ENT int10ROMT 10
- 6h
- ;[diT 10
- YPED AT10
- 10
- 10
- hT 10
- 10
- ear ;b
- dow ccont ;bE IeD AT10
- 10
- ;D2 ;b E10
- 10
- 10
- 10
- PUSH h
- ; ;bσDI WRITE_CT 10
- : equeT 10
- INTD ATKI PI0_vconCROLL
- ;10
- >CROLLn of si ; iCROLLT ¢pT 10
-
- ng b
-
- ; IDEWINwax
-
- ; proC equT 10
- ue fh,
-
- ; ON Nte iH_E Ict S:pT 10
- A colH_ EER TTTlH_NO ExoD ATlineσit:LEFTH_
- dv c
- push .
- ;er offR T 10
- IN_3.
- ;
- ; RETREN.
- ;n of 10
- read_a.
- ;T h eenable_V,lesALL dxV,IDEyboD AT_vepro000
- OV,h
- x10 es:T 10
- 0NV├E IingsTE C├ arbx,bno ├ E10
- DI├NO E
- L
- ;
- pu├σ
- ; c¡├
- dSTD AT INTOer atiUB E PcurrvecMOVE P
- ;end_eH,bE Pn of 10
- ROUE PT AHAX,_3:lesvectD AT@IDEm::
- call _3:pro18h0 f_3:h
- xush eD AT@ON
- ;
- dROW T E I10
- ndoT ar
- ;
- ; _SCT EOWp
- T NO E_init ORT 10
- the chcomT
- d SHz} PIE INALL OR DDD0
- LL rOR Dbeep10
- _cnOR Dct tER_fct_FI10
- AImaxem: _exi«emnf10
- doem
- Oh,aOW em axC AHpoemmov h
- mHzndoIF trnLOW_R,0 = rowiniDO_F,0 H10
- T O,0write_ct 1e_fals,0nu,029,0
- ; 10
- mmOR TY PI_CURR"[OR TYYY0
- AV0hOR TYbeepv_Hzelayct tc ablOR TY ;R chNEX,bx: OS vHzENnf
- iCSFI10
- A Θ,bx axc_rseq,bxmov alHIGH_RFI10
- theCHARAK = row= ADDsaveFI10
- W ar Kwrite_cds
- dinKnuHANGwrite_c_K
- ; 10
- es:[kb_ PI
- psekb___0
- bl,a:
- cakb_beep10
- SI
- kb_ct tBMLOWkb_ ;Rit ;ABINI: : HzDW OFnfweILL:INI
- O WI
- IINI ax10
- pop sINImov quecalll_qIF ofRIl_q = row10
- ╖l_q HSH ANDl_qwrite_cby T COl_qnu10
- DW OF10
- COUS
- M_DOT al,d PI,asaval,ddd0
- T REHz10
- 10
- 10
- KHFI10
- 10
- mFI10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- KI ax10
- 10
- KImov 10
- DUd tIF LTHz_vemov mptT ;d t Hlariad twrite_ctin400d tnu10
- m eFI10
- e =
- mov dFI10
- 10
- DIFICOU kw 0FI10
- S:pUBFI10
- atid Iê ;RARI fFI10
- LOW_RHz INTOnfCHARAar
- FI10
- RIG ACOD axs cyCODmov G AHz@IF r_Hz10
- IF ROWS Th
- dwUL H: ,FI10
- TTR usedULnuh,81Hz@
- ; 10
- popFI PIint 10_VFIII0
- 10
- DW OFFIbeep10
- KIFI10
- T Sll (FI10
- ndoHz}COLOR10
- 10
- }DI]th
- N²
- MOV Bto ² O = at w²2910
- oin 0
- D;CCALL:r_ 0
- Deci HAfor f pop
- ;
- ; dx6h
- 0
- Doutmen90:
- pop10
- DO_FI∞ 0
- Dorm d= "lMENvideo i"lmov I10
- cl
- "luc OFFSEfor fndoº,0for fndoorm10
- ; 15
- pop10
- X
- pfor f10
- 10
- llfor felay
- MOV h for f10
- 10
- torrm tou29 = rofor f10
- 10
- eqfor f10
- 10
- 10
- 10
- 10
- 10
- 10
-
- CALIMEoutof rolu
- pop10
- 10
- 10
- 10
- 10
- E HAL
- pop10
- 10
- IS t ;mov I 60 d *t ;ucandfor falseº10
- ebt ;h
- c10
- 10
- D MEN10
- dpIMDI]10
- = H
- pop10
- 10
- T RIM O CL
- MOV
- pop10
- 10
- 10
- 10
- 10
- OF :
- pop10
- wefor fDW OFuc10
- 10
- EN_v avfor fDW OFt MrandendeOSormTINGfor f10
- 10
- 10
- ±elmov I
- pushACKeluc10
- 10
- 10
- 10
- thefor fOP orm10
- s of
- pop10
- 10
- RN
- ;
- bDI]DL =for fline
- MOV 10
- 10
- line O10
- ll)
- pop10
- 10
- 10
- KIMENBYfor fKIDI]10
- cou1
- ;
- ; 10
- ISC1out10
- ble_p1t MET_Ca 1ormR
- Pfor f10
- 10
- 10
- 10
- 10
- 10
- READ_C ah
- pop10
- 21 psmsdº J= ADmsdh
- c10
- EL POCOLORPORfor f,rDI]10
- 10
- 10
- 10
- 10
- si
- pop10
- 10
- hanc PO29rando,At.;C10
- the cht.eci_is
- PUSt.
- ;
- ; 10
- OR DHt.outefun
- pop10
- uus
- pop10
- ues y
- pop10
- v buf_c nmov I10
- ,C
- pop10
- 10
- 10
- @ºdx IA
- pop10
- 10
- }
- popCOLORptoffse
- popDI]10
- 10
- 10
-
- MOV ansi_r
-
- pop O2
- JMP
- pop10
- S10
-
- pop10
- _qreturn gdeo_
- cmp10
- 10
- ,rble:ax
- 10
- }hic10
- 10
- 10
- 10
- H
- S:[P_10
- 10
- 10
- pop_vextend0h
- calquen10
- 10
- pop ;A10
- 10
- ndo
- cmp
- PUSH S calT: X
- PO ;actitr10h10
- ndo pro kDW OFndo axlatio10
- ndo extendendp
-
- dP_10
- 10
- rit= N d─int 1= N
- cmp10
- 10
- 10
- rea10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- DX P_10
- tor10
- EN
- cmp10
- 10
- 10
- 10
- FFH10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- e.csT: z 10
- alsetr6h
- ;SUB alr o10
- AH P_10
- 10
- 10
- DW OFT: 10
- 10
- alseal,0ow c10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- D pro10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- INT10
- DW OFROLL0_vAHASC ;Aeme>ASCk10
- 10
- OP d¢
- ;
- ; r ;tr10
- 10
- OP r oWIN
- DW OFFSE ; ax10
- RO ; extendue of ;T: 10
- DE'P_10
- ct s of zr o10
- T IS z proER Tis aP_10
- 10
- 10
- lineROLL10
-
- cm zinitiv cax alquenoff10
- 10
- 10
- IN_TION P_10
- RETendpalk10
- read_aalT: 10
- 10
- _ve axALL10
- _ver o10
- 10
- 10
- 10
- 10
- wax
- P_10
- TE C?
- lal,00rcN Wtr10
- ;BP_10
- 10
- 10
- ,r pro ;L DIN Whic
- L10
- 10
- 10
- 10
- E PT= NCT10
- 44P_10
- OR85P_10
- vec10
- 10
- 10
- 10
- 10
- INTOk
- mov dROUⁿT: AH;
- mdi,trvect byP_10
- m:NG di, ax18hre P_COU ke udi,al,010
- puP_ d esndoP_
- cmp
- ;
- ; 10
- 10
- 10
- OWten
- CMhic_init_veP_ROLLthe ch@P_initi# FA
- CM10
-
- iT N
- DE00; pe r
- DEsitrib CM10
- CT ON10
- 10
- soleROW
- CM10
- C eON popL d_coLOW INT1 2olV_AINT1cnreadON10
- 10
- A Squ ≥
- j = d
- CM10
- ARONndo
- dw
- mata,
- CM10
- 10
-
- ;
- CM10
- OR TYON10
- 10
- HEONelay(0MP BON10
- 10
- 10
- 10
- elaysitM B
- CM10
- 10
- DX
- CM10
- 10
- 10
- 10
- COU kz t
- CM10
- 10
- 10
- 10
- 10
- E
- c fnccnesCL=ncPUT10
- SUB+2≥; 83th +2ons╠vid
- CM10
- ng tSET W+2OV b
- DW ld+216hFASONalse; 1510
- 10
- 10
- 10
- _P80set 00;dw 0ON10
- 10
- FUNd_c
- CM10
- 10
- COLSset # OF t fts
- cald_d10
- :
- mov
- calL d)
- ON10
- 10
- nerONDW OFcn] ON10
- 10
-
- ;
- ar a16≥s oscree
- CM10
- 10
- 10
- OP sitING UONOP OV b ou;RI1616h10
- ax,16; 15 ONline(0solONline00; ds
- AL
- CM10
- 10
- 10
- 10
- 10
- ]ONline# OF LL rn 0fd_dommoMO
- CM10
- LEFT ON10
- 10
- nt ese
- CM10
- dx
- ONKIPUT Cp
- ;ro≥ S = aroonsWIw vro
- dw ¿ON_veOV bTA pctro16hpc_bliro; 1510
- 10
- 10
- 10
- 10
- 10
- ,r00;W TON10
- 10
- 10
- gonCTct,In# OF ; gON INTOd_dvedON INTOL d10
- SEGon e10
- DSba
- CM10
- HLsh
- CM10
- REM_t:
- m≥int 1ON10
- 10
- 10
- 10
- 10
- 10
-
- ;
- bON10
- 10
- ,BSTC
- CM10
- 84
-
- ; W:
- m; 1510
- pop
- CM(0al_ency
- CM00;10
- DW OF
- CMOV b10
- KI
- CM10
- 10
- 10
- 10
- # OF elayON}≈10
- d inty9TIODon e10
- 10
- LOWEtyh d to TERtyW_R10
-
- e 60ent:CT CALL: 60B10
- en 60fct:axy: 60AlV AL,on e10
- ds
- equ 60mm SUBRg b─ä10
- 10
- ndobee INCk ndoALL RJAND on e10
- n kk ndo9= Nk 10
- 10
- 10
- 10
- 10
- 10
- SUProw,on e10
- 10
- hanon e10
- 10
- 10
- EN910
- ╢mov ent:n:k ENB
- ;
- ePAGmov fct:scroEon e10
- 10
- 10
- EN, pO Hjg:neaent:10
- 10
- 10
- 10
- 10
- IS on e10
- 10
- hon e10
- FASk 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- D h d JMk D W_RUNCTsh bLent:ID_k 10
- 10
- 10
- ,DLfct:10
- 10
- 10
- 10
- ah,113L, p= 8LOR Lmmp wop
- on e10
- DATAp(atubeeh
- wINCatuALL R10
-
- pciatu
- ;
- , co; eatu9V ARR21h
- ≈10
- 10
- 10
- 10
- 10
- 10
- KImm proc ur 21h
- h dr.ow,21h
- W_Ru AXuse ent:10
- _inituse BREAD_ 6use fct:ommo
- PUuse Al10
- ble_puse , ps_ORDon e10
- EAD_infoon e10
- 10
- G DAUbee10
- fasAUALL R dwiveron e10
- 10
- E ATAU9st 1h
- ≈xk ,rnd[diof lon e10
- ng b i1h
- h d10
- hanc1h
- W_R10
- 10
- INTOent:«DO_FIon e10
- 10
- 2hon e10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- ta k INTOmm10
- 10
- 10
- 10
- 10
- b_r
- cbeefct_CURon e10
- esek 10
- 10
- ,Bk 10
- 10
- offsek 10
- 10
- 84UNCon endSUB k 10
- 10
- ed fk 10
- h d10
- ,ron eW_R byk on e10
- ≤ dH _CURR;
- t_lpH
- p10
- return gH ,aMO.
- ; H es
- popOR
- HH int 1 CAP_10
- 10
- 10
- 10
- popp
- 10
- curso
- cmp10
- procUMë;
- ;readINGëv 10
- ;X
- pextend
- JM
- JMX
- pì
- ;
- ; extP_10
- 10
- ffh P_ndooff10
-
- dX
- pati tou_v ; 12E IN10
- int 1 ; 12_CURRn 8li ; 12
- py_P_10
- 10
- C_cATTRI ; 12v 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- ve,eTE
- cmp10
- exteP_10
- 10
- ll dP_10
- 10
- ntP_ENv IV√n stextendFS
- ;
- ; ext
- cmp10
-
- JSt.
- cmp10
- r iUMNn stoff_HNSCR_
- cmp10
- 10
- DXallextend10
- dpall_CURR posP_D
- p10
- 10
- D ,a10
- 10
- D es
- pop10
- 10
- D int 110
-
- DW OFFSEVIDEOvideSCdomVIDEOp
- _PP_DW OF ext,3L = cVIDEO;
- ;10
-
- pop sVIDEOv
- D
- W
- cmp10
- 100P_OP ì10
- rd SI10
- ; sev_■offdsP_lineINT reRNuptE INpe OFFSEupt_CURR ou21hupt
- p10
- terupt,a10
-
- ;
- ; ruptes
- pop
-
- extenduptint 1URRr lnt vide
- jmerr
- cmp10
- reset,Lnt extay entry:nt ;
- ; 100SH C
- cmp10
- o q_0h extendOW
- P__veì ; cOFFS0h INT Ced
- cmp10
- A Ft 0h ati poH = N arE IN10
- 10
- ,r_CURR½P_,r
- p10
- DI ar,ans V,
- cmp10
- 10
- 10
- 10
- 10
-
- ;
- em
- cmp10
- OD,bx = rowp
- etnewINI
- cmp10
- cx
- b = row;
- ; scCOD = rowv 10
- 10
- 10
- 10
- 10
- byeciì10
- NG
- cmp10
- ;#P_@off10
- e ueciati
- P_10
- E INrd acti
- cmp10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- ,al c
- l
- cmp10
- hardi,
- cmp10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- p
- calSI10
- rib 0fonsal_10
- exiSI10
- 10
- cleSI10
- 10
- 10
- popve,e_co
- POP S10
- 10
- 10
- ┤SI10
- ell1h
- BODA S
- POP Sndo
- i
- jX
- p_CURROD10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- ndoME10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- elayZ NmnMOVMP BDATA10
- ERRUSI10
- DL
- POP S10
- 10
- AX
- POP SENactAL,Dn 8[Dve,e_ROW us_[DSCE
-
- POP SENEAD10
- l_[DODy_l
- POP S10
- 10
- ; 83lls ;MP B╠
- POP S10
- 10
- 10
- 10
- alsesol
- DW ar es ;MEFASdisabs ;al_offs
- POP SD PBH
- POP SOP
- podw 0
- POP SD DATAFUN
- exSI10
- UNCT:
- cSI10
- t f MOVZ N10
- :
- movSI10
- 10
- 10
- DW OFSCner
- POP SDW OF
- jm] waMOVOD
- ;
- a
- POP S10
- 10
- s oenSI10
- buf
- ;
- ; ESI10
- ING UIOSI10
- 10
- ME osME10
- ax,osal_10
- 10
- linePsolall rSI10
- ds
-
- POP S10
- 10
- avi;
- ; SI10
- 10
- 10
- lineble:10
- ax SI10
-
- moC_cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccve,e10
- 10
- KIDATA10
- endpSI10
- 10
- |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||al__lp
- POP S10
- 10
- ¿ ;INMP BWI
- pctINBH 10
-
- jmp reINsolTA
- POP S_veME10
- 10
- _veal_d pt
- PUS
- pP10
- 10
- ,rZ NW T RESI10
-
- mov bSCRSI10
- 10
- 10
- ,ral_10
- 10
- 10
- 10
- 10
- har keve,eirve SI10
- DSSS0 ke
- jmREMpop keOD10
- 10
- @
- iint 1 = roSI10
-
- jmbl OSEBH
- ;
- b
- POP S@sol2f OSEMErite
- POP S10
- 10
- ed f
- POP S10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- KISI10
- 10
- INTOSIble:elay
- DEwrit10
- 10
- 10
- } DSTIO
- DW
- C P10
- 10
- }BX10
- 10
- }"[10
- ┤
- e~10
- 10
- pop[DI
- ser l
- eTHEaxRETURwrit10
- 10
- gwrit10
- ds
- P
- ee s SUBRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRdo
- JN10
- 10
- 10
- 10
- INCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC0
- 10
- JJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJJ0
- 10
- 10
-
- ; writ10
-
- ; SSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSSlaynear ; 12ve,ewrit10
- SUP ton 8dellayBXFILeon 8"[10
- 10
- 10
- 10
- 10
- z twrit10
- _ROW NTHE10
- OR = Bs pl,0re 0 = Bit:10
- FSE = Be sMORx
- ;writ10
- G CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC0
- 10
- 10
-
- POwrit10
- n Ax
- writ10
- ILLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLlseddelaywriteus_near10
- 84us_THER
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- 0
- 10
- 10
- 10
- D BX10
- 10
- 10
- 10
- UNCT_frnt:~10
- OWnt:[DDE:NDwrit10
- 10
- LLSnt:s p] W OFit:10
- ; writ10
- 10
- 10
- 10
- 10
- 10
- ±OT
- JMPh
- wX
- PUwrit10
- 10
- 10
- 10
- 10
- 10
-
- ADwrit10
- 10
- 10
- 10
- 10
- 10
- RNwrit10
- 10
- 10
- linedel proc MOVStestBX10
- 10
- KITHEu 21h in~loopof r in[DREAD_fawrit10
- 10
- 10
- KIs pTIONbo init:10
- 10
- 10
- 10
- 10
- RENT:m 2
- JN10
- G Dwrit10
- 10
- fasm 2 P dwÅwrit10
- 10
- 10
- _vedst COLUwrit10
- xntwrit10
- 10
- 10
- 10
- 10
- ng bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb0
- 10
- 10
- 10
- ,r"[10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- 10
- vedANDwrit10
- movL,Lon it:ta INTOe skeycall = C
- JNble::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
- JMPfct PU = C Peseeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee0
- 10
- I
- sfewrit~ kDW OF10
- near
- eMOV Hwrit DSSUB restwritdeled fffffffffffffffffffffffffffffffffffffffffffffffff0
- BXH = 0
- "[ byyyyyyyyyyyyy
- Cffs≤E H,"s ;;
- _enh LO10
- F L, c,"EnMOal,p," ah,7OR
-
- ;
- t}rit CAE_gsliact
- ;
- t popar10
- 10
- popET
- ;
- t popOW,read
- ;
- ; RgsDS
- UNCatllFUNC
- JM
- ;
- tndoft
- ;
- ; extct allxiffh UTEll, ropcurr LO10
- touquen LO10
- HEp
- SUPs ;n 8
- ;
- telayC y____SUPEnC_c pe LO10
- DL
- ;
- t10
- 10
- 10
- IB LO10
- ve,eædw ofar10
- 10
- ENET ll den.dw of ah,710
- 10
- 10
- 10
- 10
- 10
- alseli10
- SUB AHft
- JS
- ;
- talseOW,10
- 10
- 10
- 10
- 10
- 10
- alseTEDdelay
- ;
- tD ffs10
- 10
- D s ;R
-
- ;
- t10
- 10
- R_
- ;
- t10
- 10
- 10
- 10
- D ah,7of U AL OW,10
- W
- CAliSC
- ;
- tDW OFar_P OF LO10
- ,3ou
- CAOW, ; re
- ;
- tDW OFDS
-
- Dvideo LO10
- 100r i┼ft10
-
- DW OFFSE┼xi; s
- ;
- tOP , r10
- of┼TED10
- DE' AL ffs10
- s of AL s ; ou
- ;
- tlineC are BX LO10
- 10
- 10
- 10
- 10
-
-
- eIT AL ritURR
- ;
- t10
- 10
- 10
- 10
- 10
- 10
- resetBI LO10
- 10
- 10
- KIOW, 100nd_dMDS
- 10
- ecar eFUNCEAD
- ;
- t10
- 10
- 10
- 10
- _vexi CPA LOCOU k10
- 10
- 10
- 10
- 10
- ,rffsLIN
- ;
- t,rs ;½
- ;
- t,rC µ LO10
- ns FSET hi ah,7 CAhirit10
- 44D0ar10
- 10
- 10
- 10
- 10
- 8D0ET 10
- sibdisabFUNC scMYD0DS
- _ibs LO10
- pciIV LO10
- prCURREdisabxi ;#l,7disab, r0H
- ;
- t@TED
- e_fa LOffs10
- ndo LOs ;z tov d LO10
- :
- movaw LO10
- l c
- ;
- t10
- ah,7har
- ;
- t10
- 10
- #
- s10
- 10
- 10
- elae:_fal pentre:keribSET_Ce:, Dm
- s}rousole.
-
-